Microprocessors are used today for performing the internal operations of modern instruments. Additionally, computers and microprocessors are used to control test and measurement systems. The primary method used for interconnecting and communicating between instruments and control computers (controllers) is the IEEE 488 bus.
The IEEE 488 bus is essentially an electrical signal transmission bus with a predefined set of lines. A set of predefined protocols govern the methodology for transferring information over the bus from a controller to specified devices, and vice versa. By using an industry standard bus, the manufacturers of a wide variety of instruments can ensure that standard software packages and interface circuits can be used to connect their instruments to microprocessor based controllers. That is, purchasers of these instruments do not need to buy a different customized controller for each instrument, because all such instruments use the same set of signal lines and the same set of communication protocols.
Integrated circuits (chips) are used to interface the computer or microprocessor to the IEEE 488 bus. The IEEE 488 interface integrated circuits (IEEE 488 chips) that exist today were designed and developed prior to the publication of the latest instrumentation standards: ANSI/IEEE 488.1-1987 and ANSI/IEEE 488.2-1987, both of which are hereby incorporated by reference. These chips, for the most part, conform to an earlier standard: IEEE Std 488-1978, also hereby incorporated by reference.
Data Settling Time. A fundamental characteristic of currently available IEEE 488 chips is slow IEEE 488.1 source handshake performance. IEEE 488-1978, as well as the newer IEEE 488.1-1987 standard, defines a data settling time, T1, that is used by all devices (instruments and controllers) that source "multiline" messages (i.e., messages containing multiple bits transmitted parallel) onto the IEEE 488.1 bus. IEEE Standards 488-1978 and 488.1-1987 allow different values for T1, depending on the configuration of the system and on the type of data line drivers used by the device performing the source handshake. Existing IEEE 488 interfaces allow some flexibility for altering the T1 delay, but do not provide implementations for optimum high speed performance. This inability to source multiline messages and data at the highest possible speed allowed by the IEEE 488 specifications results in less than desirable performance in modern test and measurement systems. There exists the need for IEEE 488 interface circuitry which implements a flexible, very high speed source handshake function.
IEEE 488.1 Bus Handshake Synchronization with Microprocessor Application Software. Test and measurement application software for controllers is often written in a fashion such that IEEE 488 bus activity is assumed to be quiescent before additional IEEE 488 communications are attempted. With current IEEE 488 chips, this is not always possible to determine without the software taking steps which affect the state of the IEEE 488 bus, such as taking control synchronously. There is a need for application level software to be able to determine when the last byte of a message has been accepted by all of the devices on the IEEE 488 bus, thereby guaranteeing that the bus is quiescent, before proceeding with further IEEE 488 bus communications.
Variable Length Messages and the Last Byte. One of the most useful features of the IEEE 488 bus is its ability to easily support variable length messages (i.e., messages and data containing a variable number of bytes). This ability is implemented using the single line END message or using the End Of String (EOS) multiline message. In transferring multiline messages via the IEEE 488.1 bus, intervention is often required at both ends of the communication before the last byte of the message is sent or received. On the sending side of the communication link, the IEEE 488 interface must be instructed to send an END message along with the last byte of the message. On the receiving end, the IEEE 488 interface must be instructed to refuse to accept further message bytes following the next one it receives. In both of these cases, the IEEE 488 device driver software running on the associated microprocessor or computer must provide for the interventions to take place by setting up and completing a transfer one byte less than the intended message length, performing the special IEEE 488 interface instructions, and finally setting up and completing a transfer of the last byte.
It is generally detrimental to the throughput of the system for the software to involve itself in this sort of an intervention. In addition, these intrusive techniques greatly increase the complexity of the driver software. Worse yet, various asynchronous IEEE 488.1 events (such as received END messages) can occur in various time relationships with the multiple transfers and special interface commands, resulting in race conditions which require substantial software effort to avoid.